<template>
  <!-- 导航栏 -->
  <van-nav-bar
    :title="$route.meta.title"
    v-show="$route.meta.isShowNav"
    @click-left="onClickLeft"
    :left-arrow="$route.meta.isShowBack"
    fixed
    placeholder
    style="height: 46px"
  />
  <!-- 路由视图 -->
  <router-view></router-view>
  <!-- 底部 TabBar -->
  <tab-bar v-if="isShowTabbar"></tab-bar>
</template>
  
<script setup>
// 引入 TabBar 组件
import TabBar from './components/TabBar.vue'
// 引入 useRoute 方法
import { useRoute } from 'vue-router'
// 引入 ref, watch, onMounted 方法
import { ref, watch, onMounted } from 'vue'
// 引入 useRouter 方法
import { useRouter } from 'vue-router'
// 引入 getUser 方法
import { getUser } from './api'
// 引入 useUser 方法
import useUser from './stores/user'
  
// 使用 useUser 方法获取 user 和 updateUser 方法
const { user, updateUser } = useUser()

// 组件挂载时，如果用户已登录，则加载用户信息
onMounted(() => {
  if (user.isLogin) { loadUser()
  } 
})

// 加载用户信息
const loadUser = async () => { const data = await getUser()
  // 更新用户信息
  updateUser({
    isLogin: true,
    username: data.username, 
    avatar: data.avatar
  }) 
}

// 使用 useRoute 方法获取路由信息
const route = useRoute()
// 定义是否展示底部 TabBar 的变量
const isShowTabbar = ref(true)

// 使用 useRouter 方法获取路由实例
const router = useRouter()
// 点击左侧按钮时，如果历史记录大于1，则返回上一页，否则跳转到首页
const onClickLeft = () => { 
  if (history.length > 1) {
    router.back()
  } else {
    router.push({ name: 'home' })
  }
}
  
// 监听路由中的 isTab 是否为 true，如果为 true，展示底部 TabBar
watch(
  () => route.meta, val => {
  isShowTabbar.value = val.isTab
  }
)
</script>
  
<style>
#app {
  color: #2c3e50;
  line-height: 24px;
  --van-nav-bar-background: #ff8000;
  --van-nav-bar-title-text-color: #fff;
  --van-nav-bar-icon-color: #fff;

}
</style>